package nif;

public class Ficha {

	private String nombre;
	private String apellidos;
	private int edad;
	private String nif;
	private static final char[] CODIGO = {
		'T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N',
		'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'
	};

	public Ficha(String nombre, String apellidos, int edad, String nif) {
		super();
		this.nombre = nombre;
		this.apellidos = apellidos;
		this.edad = edad;
		this.nif = nif;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellidos() {
		return apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}

	public String getNIF() {
		return nif;
	}

	public void setNIF(String nif) {
		this.nif = nif;
	}

	public int getEdad() {
		return edad;
	}

	public void setEdad(int edad) {
		this.edad = edad;
	}
	
	public boolean comprobarNIF() {
		if (nif.length() > 9 || nif.length() < 2) {
			return false;
		}
		int numero = Integer.parseInt(nif.substring(0, nif.length() - 1));
		char letra = nif.charAt(nif.length()-1);
		return letra == CODIGO[numero % 23];
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("Ficha [");
		sb.append("nombre=");
		sb.append(nombre);
		sb.append(", apellidos=");
		sb.append(apellidos);
		sb.append(", edad=");
		sb.append(edad);
		sb.append(", nif=");
		sb.append(nif);
		if (comprobarNIF()) {
			sb.append(", NIF correcto");
		} else {
			sb.append(", NIF incorrecto");
		}
		sb.append("]");
		return sb.toString();
	}
	
}
